﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DTO;
using AutoMapper;
using System.Data;

namespace Data
{
  public class PhieuNhapSachRepository
    {
      private static PhieuNhapSachDTO MapPhieuNhapSachEFToPhieuNhapSachDTO(PHIEUNHAPSACH phieunhapsachEF)
      {
          Mapper.CreateMap<PHIEUNHAPSACH, PhieuNhapSachDTO>();
          return Mapper.Map<PHIEUNHAPSACH, PhieuNhapSachDTO>(phieunhapsachEF);
      }
      private static PHIEUNHAPSACH MapPhieuNhapSachDTOToPhieuNhapSachEF(PhieuNhapSachDTO phieunhapsachDTO)
      {
          Mapper.CreateMap<PhieuNhapSachDTO, PHIEUNHAPSACH>();
          return Mapper.Map<PhieuNhapSachDTO, PHIEUNHAPSACH>(phieunhapsachDTO);

      }
      public static List<PhieuNhapSachDTO> GetAllPhieuNhapSach()
      {
          List<PhieuNhapSachDTO> list = new List<PhieuNhapSachDTO>();
          using (QuanLyNhaSachEntities context = new QuanLyNhaSachEntities())
          {
              try
              {
                  var query = from phieunhapsach in context.PHIEUNHAPSACHList
                              select phieunhapsach;
                  foreach (var phieunhapsachEF in query)
                  {
                      PhieuNhapSachDTO phieunhapsachDTO = MapPhieuNhapSachEFToPhieuNhapSachDTO(phieunhapsachEF);
                      list.Add(phieunhapsachDTO);

                  }
              }
              catch
              {

              }
          }
          return list;
      }
      public static bool Insert(PhieuNhapSachDTO phieunhapsachDTO)
      {
          bool kq = true;
          using (QuanLyNhaSachEntities context = new QuanLyNhaSachEntities())
          {
              try
              {
                  PHIEUNHAPSACH phieunhapsachEF = MapPhieuNhapSachDTOToPhieuNhapSachEF(phieunhapsachDTO);
                  context.AddToPHIEUNHAPSACHList(phieunhapsachEF);
                  context.SaveChanges();
              }
              catch
              {
                  kq = false;
              }
          }
          return kq;
      }
      public static bool Update(PhieuNhapSachDTO phieunhapsachDTO)
      {
          bool kq = true;

          using (QuanLyNhaSachEntities context = new QuanLyNhaSachEntities())
          {
              try
              {
                  EntityKey key = context.CreateEntityKey("PHIEUNHAPSACHList", new PHIEUNHAPSACH { MaPhieuNhap = phieunhapsachDTO.MaPhieuNhap });
                  PHIEUNHAPSACH origphieunhapsach = context.GetObjectByKey(key) as PHIEUNHAPSACH;
                  context.Detach(origphieunhapsach);
                  context.Attach(origphieunhapsach);
                  PHIEUNHAPSACH updatephieunhapsach = MapPhieuNhapSachDTOToPhieuNhapSachEF(phieunhapsachDTO);
                  context.ApplyCurrentValues<PHIEUNHAPSACH>("PHIEUNHAPSACHList", updatephieunhapsach);
                  context.SaveChanges();
              }
              catch
              {
                  kq = false;
              }
          }
          return kq;
      }
    }
}
